
var globalDataTableConfig = {
	beforeAjax: function(){},
	methodType:'post',
	sucessAjax:function(){},
	scrollX:false
};
/**
 * 初始化dataGrid
 * @returns
 */
function initDg(tblId, config){
	config = $.extend({}, globalDataTableConfig, config);
	
	var table = $("#"+tblId).DataTable({
		// 是否允许检索
        "searching": false,
        // 是否允许排序
        "ordering": false,
        // 初期排序列
        //"order": [[0,'asc'],[1,'desc']],
        // 是否显示情报 就是"当前显示1/100记录"这个信息
        "info": true,
        // 是否允许翻页，设成false，翻页按钮不显示
        "paging": true,
        // 水平滚动条
        "scrollX": config.scrollX,
        // 垂直滚动条
        "scrollY": false,
        // 件数选择功能 默认true
        "lengthChange": true,
        // 件数选择下拉框内容
        "lengthMenu": [6, 10, 20],
        // 每页的初期件数 用户可以操作lengthMenu上的值覆盖
        "pageLength": 6,
        //翻页按钮样式
        // numbers:数字
        // simple:前一页，后一页
        // simple_numbers:前一页，后一页，数字
        // full:第一页，前一页，后一页，最后页
        //full_numbers:第一页，前一页，后一页，最后页，数字
        //first_last_numbers:第一页，最后页，数字
        "pagingType": "full_numbers",
        // 行样式应用 指定多个的话，第一行tr的class为strip1，第二行为strip2，第三行为strip3.
        // 第四行以后又开始从strip1循环。。。 如果想指定成斑马条状，这里的class必须指定为2个。
//         "stripeClasses": ['strip1', 'strip2', 'strip3'],
        // 自动列宽
        "autoWidth": true,
        // 是否表示 "processing" 加载中的信息，这个信息可以修改
        "processing": true,
        // 每次创建是否销毁以前的DataTable,默认false
        "destroy": false,
        // 控制表格各种信息的表示位置（比较复杂） 默认:lfrtip
        // 具体参考：https://datatables.net/reference/option/dom
        "dom": 'lrtip',
        "language": {
            "processing": "正在加载...",
            // 当前页显示多少条
            "lengthMenu": "每页显示 _MENU_ 条",
            // _START_（当前页的第一条的序号） ,_END_（当前页的最后一条的序号）,_TOTAL_（筛选后的总件数）,
            // _MAX_(总件数),_PAGE_(当前页号),_PAGES_（总页数）
            "info": "第 _PAGE_页    共 _PAGES_页",
            // 没有数据的显示（可选），如果没指定，会用zeroRecords的内容
            "emptyTable": "没有要展示的数据",
            // 筛选后，没有数据的表示信息，注意emptyTable优先级更高
            "zeroRecords": "查不到数据",
            // 千分位的符号，只对显示有效，默认就是","  一般不要改写
            //"thousands": "'",
            // 小数点位的符号，对输入解析有影响，默认就是"." 一般不要改写
            //"decimal": "-",
            // 翻页按钮文字控制
            "paginate": {
                "first": "首页",
                "last": "尾页",
                "next": "下一页",
                "previous": "上一页"
            },
            // Client-Side用，Server-Side不用这个属性
            "loadingRecords": "请耐心等待 - 加载中..."
        },
        // 默认是false
        // 如果设为true，将只渲染当前也的html，速度会很快，但是通过API就访问不到所有页的数据，有利有弊
        //"deferRender": false,
        // 服务器端处理方式
        "serverSide": true,
        "bServerSide":true,
        "bProcessing": true,  

        // ajax选项 可以直接简单指定成请求的文件
        //"ajax": "data.json",
        // 也可以用对象来配置，更加灵活
        "ajax": function(data, callback, settings){
        	// 此处可以在发送请求前构造参数
        	config.beforeAjax(data);
        	$.ajax({
                type: config.methodType,
                url: config.queryUrl,
                cache: false,  //禁用缓存
                data: data,  //传入组装的参数
                dataType: "json",
                success: function (result) {
                    //调用DataTables提供的callback方法，代表数据已封装完成并传回DataTables进行渲染
                    //此时的数据需确保正确无误，异常判断应在执行此回调前自行处理完毕
                	config.sucessAjax(result);
                	callback(result.data);
                }
            });
        },
        //指定用于行ID的属性名 默认是：DT_RowId
        "rowId": 'id',
        "columns": config.columns,
        'rowCallback':function (row, data, index){
        	$(row).removeClass();
        	$(row).addClass('text-c');
        	$('td:eq(0)', row).html( '<input type="checkbox" name="" value=""/><input type="hidden" value="'+data.id+'"/>' );
        	var no = this.api().page() * this.api().page.len() + index + 1;
        	$('td:eq(1)', row).html(no);
        	
        	config.rowCallback(row, data, index);
    	}
//     	"fnDrawCallback":function(){
//     		this.api().column(1).nodes().each(function(cell, i){
//     			cell.innerHTML = i + 1;
//     		});
//     	}
		
	});
	return table;
}

var recordId;
function fillTable(id, url, formId){
	recordId = id;
	$.ajax({
		url: url,
		data: 'id='+id, 
		type: "POST",
		success: function(data, textStatus){
			if (data.code == 0) {
				var obj = data.data;
				fillFormByName(formId, obj);
			}else{
				alert(data.msg);
			}
		},
		error: function (data, textStatus, errorThrown) {
			var s=JSON.stringify(data);
		}
	});
}


/**
 * 复选框按钮，全选/反选
 * @param t 复选框this对象
 * @returns
 */
function checkAll(t){
	var hasCheck = t.checked;
	$(t).parent().parent().parent().parent().parent().parent().parent().find('tbody input[type=checkbox]').each(function(){
		if (hasCheck) {
			$(this).prop("checked",true);
		}else{
			$(this).prop("checked",false);
		}
	});	
}

var globalAjaxSettings = {
	type:'get',
	async:true
};

/**
 * 封装系统通用ajax方法
 * 使用方法:
 * 1. 兼容jquery的ajax参数
 * 2. 有以下几个属性需要注意(新增或和jquery中定义不同的):
 * 	1)success: 返回结果逻辑成功时(code=0),调用的函数
 *  2)fail: 返回结果逻辑失败时(code!=0),调用的函数
 *  
 * 3. 返回逻辑失败时, 如果找不到fail函数,那么则弹出 msg,如果没有msg属性,则 提示"操作失败"
 *  
 * @param settings
 * @returns
 */
function jajax(settings){
	settings = $.extend({}, globalAjaxSettings, settings);
	$.ajax({
		url: settings.url,
		data: settings.data, 
		type: settings.type,
		async: settings.async,
		success: function(data, textStatus){
			if (data.code == 0) {
				if (settings.success) {
					settings.success.apply(this, [data, textStatus]);
				}
			}else {
				if (settings.fail) {
					settings.fail.apply(data);
				} else{
					if (data.msg){
						alert(data.msg);
					} else {
						alert('操作失败!');
					}
				}
			} 
		},
		error: function ( xhr, textStatus, errorThrown) {
			var statusCode =  xhr.status;
			if (statusCode == 500) {
				alert("系统错误！");
			} else {
				alert("系统错误！错误码："+statusCode);
			}
		},
		complete: function (xhr, textStatus){
			var statusCode =  xhr.status;
			var code = xhr.getResponseHeader("code");
			
			if (statusCode == 200) {
				if (code == '2') {
					alert('登陆超时');
					var win = window;
					if (window.parent) {
						win = window.parent;
					}
					win.location.href='';
				} else if(code == '4'){
					alert('无权限!');
				}
			}
		}
	});	
}